<?php
class CampoDAO implements BaseDAO {
	
	/* Recupera os dados do campo */
	public function recuperarDadosCampo($campo) {
		$utility = QueryUtility::getInstance();
		
		try {
			$query = $utility->getQuery(QueryConstants::DADOS_CAMPO,$campo);
			
			$conexao = new Conexao();

			$result = $conexao->executar($query);
			
			$dados = $this->mapearResultados($result);
		} catch (Exception $exc) {
			throw $exc;
		}
		
		return $dados;
	}
	
	/* Recupera os campos que serao mostrados */
	public function recuperarCampos() {
		$utility = QueryUtility::getInstance();
		
		try {
			$query = $utility->getQuery(QueryConstants::CAMPOS,null);
			$conexao = new Conexao();

			$result = $conexao->executar($query);
			
			$campos = $this->mapearResultados($result);
		} catch (Exception $exc) {
			throw $exc;
		}
		
		return $campos;
	}
	
	public function isCampoData($campo) {
		$utility = QueryUtility::getInstance();
		
		try {
			$query = $utility->getQuery(QueryConstants::CAMPO_DATA,$campo);
			$conexao = new Conexao();

			$result = $conexao->executar($query);

			$isData = $this->existeCampo($result);

		} catch (Exception $exc) {
			throw $exc;
		}
		
		return $isData;
	}
	
	/* Mapeia os resultados */
	function mapearResultados($result) {

		if (pg_num_rows($result)== 0) {
			return null;
		}
		
		$dados = array();
		$dados = pg_fetch_all_columns($result);
		
		$conc = "";
		foreach ($dados as $dado) {
			if ($conc != "") {
				$conc = $conc.",".$dado;	
			} else { 
				$conc = $dado;
			}
			
		}
		
		return $conc;
	}
	
	/* Retorna true caso exista resultado */
	function existeCampo($result){
		
		if (pg_num_rows($result)== 0) {
			return false;
		} else {
			return true;		
		}
	}
	
}
?>